namespace CSharpPro._1030;

using System;
using System.Collections.Generic;

// 实现UserService接口的具体类
public class UserServiceImpl : UserService
{
    // 模拟数据库存储（实际开发中会使用数据库）
    private readonly Dictionary<int, User> _userRepository = new Dictionary<int, User>();
    private int _nextId = 1; // 用于生成自增ID

    // 实现新增用户方法
    public bool Add(User user)
    {
        if (user == null)
        {
            Console.WriteLine("错误：用户信息不能为空");
            return false;
        }

        // 自动生成ID（避免外部传入ID冲突）
        user.Id = _nextId++;
        _userRepository.Add(user.Id, user);
        Console.WriteLine($"用户【{user.Name}】添加成功，ID：{user.Id}");
        return true;
    }

    // 实现删除用户方法
    public bool Delete(int userId)
    {
        if (!_userRepository.ContainsKey(userId))
        {
            Console.WriteLine($"错误：ID为{userId}的用户不存在");
            return false;
        }

        var deletedUser = _userRepository[userId];
        _userRepository.Remove(userId);
        Console.WriteLine($"用户【{deletedUser.Name}】（ID：{userId}）删除成功");
        return true;
    }

    // 实现修改用户方法
    public User Update(User user)
    {
        if (user == null || user.Id <= 0)
        {
            Console.WriteLine("错误：用户信息或ID无效");
            return null;
        }

        if (!_userRepository.ContainsKey(user.Id))
        {
            Console.WriteLine($"错误：ID为{user.Id}的用户不存在");
            return null;
        }

        // 更新用户信息
        _userRepository[user.Id] = user;
        Console.WriteLine($"用户【{user.Name}】（ID：{user.Id}）更新成功");
        return user;
    }

    // 实现查询用户方法
    public User GetById(int userId)
    {
        if (_userRepository.TryGetValue(userId, out User user))
        {
            Console.WriteLine($"查询成功：ID={user.Id}，姓名={user.Name}，年龄={user.Age}");
            return user;
        }
        else
        {
            Console.WriteLine($"错误：ID为{userId}的用户未找到");
            return null;
        }
    }
}